#pragma once

#include <memory>
#include "hzpch.h"
namespace SCION_UTIL
{
  struct SDL_Destroyer
  {
    void operator()(SDL_Window *window) const;
    void operator()(SDL_Gamepad *controller) const;
    void operator()(SDL_Cursor *cursor) const;
  };

  // typedef std::shared_ptr<SDL_GameController> Controller;
  // static Controller make_shared_controller(SDL_GameController *controller);

  typedef std::shared_ptr<SDL_Gamepad> Controller;
  static Controller make_shared_cursor(SDL_Gamepad *controller);

  typedef std::shared_ptr<SDL_Cursor> Cursor;
  static Cursor make_shared_cursor(SDL_Cursor *cursor);

  typedef std::unique_ptr<SDL_Window, SCION_UTIL::SDL_Destroyer> WindowPtr;

  // // 使用 SDL3 的新类型：SDL_Gamepad
  // using SDLGamepadPtr = std::shared_ptr<SDL_Gamepad>;

  // // SDL3 中 cursor 使用 SDL_Cursor*
  // using SDLCursorPtr = std::shared_ptr<SDL_Cursor>;

  // // 工厂函数：创建智能指针管理的 Gamepad
  // SDLGamepadPtr make_shared_gamepad(int joystick_index);

  // // 工厂函数：创建智能指针管理的 Cursor
  // SDLCursorPtr make_shared_cursor(SDL_Cursor *cursor);
  void testLog();
}